#include "cursorfix.h"
#include "ui_cursorfix.h"

cursorFix::cursorFix(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::cursorFix)
{
    ui->setupUi(this);
    ui->textBrowser->append("<p>就绪…</p>");
}

cursorFix::~cursorFix()
{
    delete ui;
}

void cursorFix::updateStatus(QString msg){
    QString time = QTime::currentTime().toString("hh:mm:ss");
    ui->textBrowser->append("<p>" + time + "\t" + msg + "</p>");
}

void cursorFix::on_startButton_clicked()
{
    QFile file(QDir::homePath() + "/.icons/default/index.theme");

    if(!file.exists()) {
        updateStatus("没有命中文件。无法修改。");
        updateStatus("修复不成功。");
        return;
    }

    updateStatus("命中文件。整理…");
    if(!file.rename(QDir::homePath() + "/.icons/default/index.theme.bak")) {
        updateStatus("文件重命名失败。");
        updateStatus("修复不成功。");
        return;
    }

    updateStatus("修改完成，验证…");
    int result = QMessageBox::information(this, "验证", "修改已完成。相关程序的指针样式修正了吗？","修正了", "未修正");
    if(!result) {
        updateStatus("完成。");
        return;
    }

    updateStatus("修改未生效，尝试进一步方案…");

    QDir dir(QDir::homePath() + "/.icons/default/");
    if(!dir.exists()) {
        if(!dir.mkdir(dir.absolutePath())) {
            updateStatus("无法创建目录。");
            updateStatus("修复不成功。");
            return;
        }
    }

    QFile xcursortheme("/etc/alternatives/x-cursor-theme");
    if(!xcursortheme.exists()) {
        updateStatus("目标文件不存在。");
        updateStatus("修复不成功。");
        return;
    }
    if(!QFile::link("/etc/alternatives/x-cursor-theme", QDir::homePath() + "/.icons/default/index.theme")) {
        updateStatus("软链接建立失败。");
        updateStatus("修复不成功。");
        return;
    }

    updateStatus("修改完成，验证…");
    result = QMessageBox::information(this, "验证", "修改已完成。相关程序的指针样式修正了吗？","修正了", "未修正");
    if(!result) {
        updateStatus("完成。");
        return;
    }
    updateStatus("修复不成功。");
}
